Android View 与 System-UI 深度解析
📚 共计 30 章节
01
Android系统UI架构全景
从Linux内核到应用层的UI渲染链路,SurfaceFlinger与WindowManagerService的角色。
架构
渲染
02
View的测量(Measure)机制
MeasureSpec三种模式(EXACTLY/AT_MOST/UNSPECIFIED),onMeasure重写与自定义View。
测量
自定义
03
View的布局(Layout)与绘制(Draw)流程
onLayout与onDraw调用时机,Canvas与Paint实战用法。
布局
绘制
04
ViewGroup的深度剖析
addView与removeView内部逻辑,LayoutParams传递机制。
ViewGroup
源码
05
事件分发机制(上)
MotionEvent生成与传递,dispatchTouchEvent与onInterceptTouchEvent协作。
事件
分发
06
事件分发机制(下)
滑动冲突经典解决方案(外部/内部拦截法),NestedScrolling机制。
滑动冲突
嵌套滚动
07
Scroller与VelocityTracker
平滑滚动实现原理,Fling手势速度追踪与衰减。
滚动
手势
08
View的动画体系
View动画、属性动画与帧动画区别,AnimatorSet组合使用。
动画
属性动画
09
自定义View实战(一)
绘制圆形进度条,掌握onDraw与invalidate配合。
自定义
进度条
10
自定义View实战(二)
实现可拖拽悬浮球,掌握事件分发与窗口管理。
悬浮球
拖拽
11
RecyclerView的缓存机制
ViewHolder复用池,四级缓存(AttachedScrap/Cache/ViewCacheExtension/RecycledViewPool)。
缓存
RecyclerView
12
RecyclerView的LayoutManager
LinearLayoutManager与GridLayoutManager源码分析,自定义LayoutManager。
布局管理
源码
13
ItemDecoration与ItemAnimator
分割线绘制与增删动画的自定义。
装饰
动画
14
SystemUI概述
SystemUI进程启动流程,SystemUIApplication与SystemUIService。
SystemUI
启动
15
状态栏(StatusBar)深度解析
StatusBar布局结构,通知图标与系统图标更新逻辑。
状态栏
图标
16
导航栏(NavigationBar)深度解析
三键导航与手势导航切换逻辑,KeyEvent分发。
导航栏
手势
17
锁屏(Keyguard)机制
KeyguardViewMediator调度逻辑,锁屏窗口显示与隐藏。
锁屏
Keyguard
18
通知栏展开与折叠
NotificationPanelView滑动逻辑,QsPanel快捷设置。
通知栏
快捷设置
19
SystemUI的窗口层级
WindowManager.LayoutParams类型与层级,TYPE_STATUS_BAR与TYPE_NAVIGATION_BAR的Z-order。
窗口
层级
20
SystemUI的Theme与资源管理
SystemUI的ThemeOverlay,动态换肤实现原理。
主题
换肤
21
SystemUI的动画与过渡
状态栏展开/折叠动画,通知列表入场/退场动画。
动画
过渡
22
SystemUI与AMS/WMS的交互
通过Binder调用获取任务栈信息,窗口焦点变化对SystemUI的影响。
AMS
WMS
23
SystemUI的插件化机制
PluginManager加载流程,如何开发SystemUI插件。
插件化
Plugin
24
SystemUI的暗黑模式(Dark Mode)
UiModeManager监听,SystemUI各组件暗黑模式适配。
暗黑模式
适配
25
SystemUI的截屏与录屏
ScreenCaptureHelper实现,MediaProjection权限申请。
截屏
录屏
26
SystemUI的Toast与Dialog
Toast自定义窗口,Dialog的WindowToken校验。
Toast
Dialog
27
SystemUI的输入法(IME)交互
InputMethodManager调用,导航栏与输入法避让逻辑。
输入法
IME
28
SystemUI的功耗与性能优化
SystemUI的ANR分析,过度绘制(Overdraw)检测与优化。
性能
优化
29
SystemUI的测试与调试
使用dumpsys systemui命令,SysUI单元测试与UI测试。
测试
调试
30
综合实战:仿iOS控制中心
结合所学知识,实现可自定义的快捷控制面板。
实战
控制中心